import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace StudentsApi {
  /** 学生基本信息信息 */
  export interface Students {
    studentsId: number; // 学生id
    studentsCode: string; // 学号
    status?: number; // 学生有效状态（0=无效 1=有效）
    period: string; // 学段（学制）
    semester: number; // 学期id
    gradeId: number; // 年级id
    grade: string; // 年级
    classId: string; // 班级id
    className: string; // 班级
    schoolId: string; // 学校id
    enterYear: string; // 入学年份
    schoolYear: string; // 学年
    schoolStatus: number; // 在校状态（0=不在校 1=在校）
    studentProfessionId: string; // 学生专业
    studentType: string; // 学生类别
    studentName: string; // 学生姓名
    beforeName: string; // 曾用名
    idCard: string; // 身份证
    cardType: string; // 证件类型
    sex: number; // 性别（0=未知 1=男 2=女）
    birthday: Dayjs | string; // 出生日期
    namePinyin: string; // 姓名拼音
    englishName: string; // 英文姓名
    photoUrl: string; // 学生照片
    healthStatus: string; // 健康状况
    onlyChild: number; // 是否独生子女（0=否 1=是）
    isOrphan: number; // 是否孤儿（0=否 1=是）
    isSpecialcare: number; // 是否烈士或优抚子女（0=否 1=是）
    isLeftbehind: number; // 是否留守儿童（0=否 1=是）
    isWorker: number; // 是否随迁子女（0=否 1=是）
    lodgeType: number; // 是否住校（0=否 1=是）
    cellphone: string; // 手机
    email: string; // 电子邮箱
    weixin: string; // 微信
    nation: string; // 民族
    faith: string; // 宗教信仰
    residenceType: number; // 户口性质（0=城市 1=农村）
    politicalInfo: string; // 政治面貌
    householdDetail: string; // 居住地址
    addressDetail: string; // 户籍所在地详细信息
    expertise: string; // 专长
    hobby: string; // 爱好
    backInformation: string; // 备注
  }
}

/** 查询学生基本信息分页 */
export function getStudentsPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<StudentsApi.Students>>(
    '/edu/base/students/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询学生基本信息详情 */
export function getStudents(id: number) {
  return requestClient.get<StudentsApi.Students>(
    `/edu/base/students/get?id=${id}`,
  );
}

/** 新增学生基本信息 */
export function createStudents(data: StudentsApi.Students) {
  return requestClient.post('/edu/base/students/create', data);
}

/** 修改学生基本信息 */
export function updateStudents(data: StudentsApi.Students) {
  return requestClient.put('/edu/base/students/update', data);
}

/** 删除学生基本信息 */
export function deleteStudents(id: number) {
  return requestClient.delete(`/edu/base/students/delete?id=${id}`);
}

/** 批量删除学生基本信息 */
export function deleteStudentsList(ids: number[]) {
  return requestClient.delete(
    `/edu/base/students/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出学生基本信息 */
export function exportStudents(params: any) {
  return requestClient.download('/edu/base/students/export-excel', params);
}
